#include <ch32f10x.h>
#include "delay.h"
#include "key.h"

// 定义全局变量以存储上一次的功能状态
uint8_t last_function_state = GPIO_PIN_RESET;

int main()
{
    KEY_Init();
    while (1)
    {
        // 检查是否为自动模式
        MODE_Select(PIN_SET); // 设置模式选择引脚为高电平，表示自动模式

        uint8_t current_function_state = HAL_GPIO_ReadPin(FUNCTION_PORT, FUNCTION_PIN);
        if ((last_function_state == GPIO_PIN_RESET) && (current_function_state == GPIO_PIN_SET))
        {
            // 执行一次操作
            delay_ms(100);
            VALVE_Control(PIN_SET);
            delay_ms(500);
            VALVE_Control(PIN_RESET);
        }
        // 更新功能键的上一次状态
        last_function_state = current_function_state;

        // 如果不是自动模式，则执行手动模式操作
        MODE_Select(PIN_RESET); // 设置模式选择引脚为低电平，表示手动模式
        current_function_state = HAL_GPIO_ReadPin(FUNCTION_PORT, FUNCTION_PIN);
        if ((last_function_state == GPIO_PIN_RESET) && (current_function_state == GPIO_PIN_SET))
        {
            // 执行一次操作
            delay_ms(100);
            VALVE_Control(PIN_SET);
        }
        // 更新功能键的上一次状态
        last_function_state = current_function_state;
    }
}
